package com.cee.admin.config.mybatisplus.method;//package com.cee.gui.config.mybatisplus.method;
//
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.core.enums.SqlMethod;
//import com.baomidou.mybatisplus.core.injector.AbstractMethod;
//import com.baomidou.mybatisplus.core.metadata.TableInfo;
//import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
//import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
//import org.apache.ibatis.executor.keygen.KeyGenerator;
//import org.apache.ibatis.executor.keygen.NoKeyGenerator;
//import org.apache.ibatis.mapping.MappedStatement;
//import org.apache.ibatis.mapping.SqlSource;
//
///**
// * @author wsz
// * @since 2023/6/19
// */
//public class InsertIgnore extends AbstractMethod {
//
//    public static String getSqlMethod() {
//        return "<script>INSERT IGNORE %s %s VALUES %s</script>";
//    }
//
//    @Override
//    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
//        String sqlMethod = "insertIgnore";
//        KeyGenerator keyGenerator = NoKeyGenerator.INSTANCE;
//        String columnScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlColumnMaybeIf(null),
//                LEFT_BRACKET, RIGHT_BRACKET, null, COMMA);
//        String valuesScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlPropertyMaybeIf(null),
//                LEFT_BRACKET, RIGHT_BRACKET, null, COMMA);
//        String keyProperty = null;
//        String keyColumn = null;
//        // 表包含主键处理逻辑,如果不包含主键当普通字段处理
//        if (StringUtils.isNotBlank(tableInfo.getKeyProperty())) {
//            if (tableInfo.getIdType() == IdType.AUTO) {
//                /* 自增主键 */
//                keyGenerator = Jdbc3KeyGenerator.INSTANCE;
//                keyProperty = tableInfo.getKeyProperty();
//                keyColumn = tableInfo.getKeyColumn();
//            } else {
//                if (null != tableInfo.getKeySequence()) {
//                    keyGenerator = TableInfoHelper.genKeyGenerator(sqlMethod, tableInfo, builderAssistant);
//                    keyProperty = tableInfo.getKeyProperty();
//                    keyColumn = tableInfo.getKeyColumn();
//                }
//            }
//        }
//        String sql = String.format(getSqlMethod(), tableInfo.getTableName(), columnScript, valuesScript);
//        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
//        return this.addInsertMappedStatement(mapperClass, modelClass, sqlMethod, sqlSource, keyGenerator, keyProperty, keyColumn);
//    }
//}
